﻿#region MIT License
/*
 *
 * MIT License
 *
 * Copyright (c) 2017 - 2023 Krypton Suite
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 */
#endregion

namespace Krypton.Toolkit.Suite.Extended.Utilities.System.Internal
{
    internal sealed class PhonemeConverter
    {
        private class PhoneMap
        {
            internal int _lcid;

            internal PhoneId[] _phoneIds;

            internal PhoneMap()
            {
            }
        }

        private class PhoneId : IComparer<PhoneId>
        {
            internal string _phone;

            internal char[] _cp;

            internal PhoneId()
            {
            }

            int IComparer<PhoneId>.Compare(PhoneId x, PhoneId y)
            {
                return string.Compare(x._phone, y._phone, StringComparison.CurrentCulture);
            }
        }

        private class PhoneMapCompressed
        {
            internal int _lcid;

            internal int _count;

            internal byte[] _phones;

            internal char[] _cps;

            internal PhoneMapCompressed()
            {
            }

            internal PhoneMapCompressed(int lcid, int count, byte[] phoneIds, char[] cps)
            {
                _lcid = lcid;
                _count = count;
                _phones = phoneIds;
                _cps = cps;
            }
        }

        private PhoneMap _phoneMap;

        private static readonly PhoneMap[] _phoneMaps;

        private static PhoneMapCompressed[] _phoneMapsCompressed;

        private static char[] _updIds;

        private static readonly PhonemeConverter _upsConverter;

        internal static PhonemeConverter UpsConverter => _upsConverter;

        static PhonemeConverter()
        {
            _phoneMapsCompressed = new PhoneMapCompressed[8]
            {
                new(0, 207, new byte[720]
                {
                    46,
                    0,
                    95,
                    33,
                    0,
                    95,
                    38,
                    0,
                    95,
                    44,
                    0,
                    95,
                    46,
                    0,
                    95,
                    63,
                    0,
                    95,
                    94,
                    0,
                    95,
                    124,
                    0,
                    95,
                    124,
                    124,
                    0,
                    95,
                    83,
                    0,
                    43,
                    0,
                    65,
                    0,
                    65,
                    65,
                    0,
                    65,
                    68,
                    86,
                    0,
                    65,
                    69,
                    0,
                    65,
                    69,
                    88,
                    0,
                    65,
                    72,
                    0,
                    65,
                    73,
                    255,
                    255,
                    0,
                    65,
                    78,
                    255,
                    0,
                    65,
                    79,
                    0,
                    65,
                    79,
                    69,
                    0,
                    65,
                    79,
                    88,
                    255,
                    255,
                    0,
                    65,
                    80,
                    73,
                    0,
                    65,
                    83,
                    80,
                    0,
                    65,
                    84,
                    82,
                    0,
                    65,
                    85,
                    255,
                    255,
                    0,
                    65,
                    88,
                    0,
                    65,
                    88,
                    82,
                    0,
                    66,
                    0,
                    66,
                    66,
                    0,
                    66,
                    72,
                    0,
                    66,
                    73,
                    77,
                    0,
                    66,
                    86,
                    65,
                    0,
                    66,
                    86,
                    68,
                    0,
                    67,
                    0,
                    67,
                    67,
                    255,
                    255,
                    0,
                    67,
                    67,
                    50,
                    0,
                    67,
                    67,
                    75,
                    0,
                    67,
                    69,
                    78,
                    0,
                    67,
                    72,
                    255,
                    255,
                    0,
                    67,
                    72,
                    50,
                    0,
                    67,
                    74,
                    0,
                    67,
                    84,
                    0,
                    67,
                    86,
                    68,
                    0,
                    68,
                    0,
                    68,
                    69,
                    78,
                    0,
                    68,
                    72,
                    0,
                    68,
                    73,
                    77,
                    0,
                    68,
                    82,
                    0,
                    68,
                    88,
                    0,
                    68,
                    88,
                    82,
                    0,
                    68,
                    90,
                    255,
                    255,
                    0,
                    68,
                    90,
                    50,
                    0,
                    69,
                    0,
                    69,
                    72,
                    0,
                    69,
                    72,
                    88,
                    255,
                    255,
                    0,
                    69,
                    73,
                    255,
                    255,
                    0,
                    69,
                    74,
                    67,
                    0,
                    69,
                    78,
                    255,
                    0,
                    69,
                    82,
                    0,
                    69,
                    82,
                    82,
                    0,
                    69,
                    83,
                    72,
                    0,
                    69,
                    84,
                    0,
                    69,
                    85,
                    0,
                    69,
                    88,
                    0,
                    69,
                    90,
                    72,
                    0,
                    70,
                    0,
                    71,
                    0,
                    71,
                    50,
                    0,
                    71,
                    65,
                    0,
                    71,
                    72,
                    0,
                    71,
                    73,
                    77,
                    0,
                    71,
                    76,
                    0,
                    71,
                    84,
                    0,
                    72,
                    0,
                    72,
                    71,
                    0,
                    72,
                    72,
                    0,
                    72,
                    76,
                    71,
                    0,
                    72,
                    90,
                    0,
                    73,
                    0,
                    73,
                    72,
                    0,
                    73,
                    88,
                    0,
                    73,
                    89,
                    88,
                    255,
                    255,
                    0,
                    74,
                    0,
                    74,
                    67,
                    255,
                    255,
                    0,
                    74,
                    67,
                    50,
                    0,
                    74,
                    68,
                    0,
                    74,
                    72,
                    255,
                    255,
                    0,
                    74,
                    72,
                    50,
                    0,
                    74,
                    73,
                    77,
                    0,
                    74,
                    74,
                    255,
                    255,
                    0,
                    75,
                    0,
                    76,
                    0,
                    76,
                    65,
                    66,
                    0,
                    76,
                    65,
                    77,
                    0,
                    76,
                    65,
                    82,
                    0,
                    76,
                    67,
                    75,
                    0,
                    76,
                    67,
                    75,
                    50,
                    0,
                    76,
                    71,
                    0,
                    76,
                    72,
                    0,
                    76,
                    74,
                    0,
                    76,
                    76,
                    65,
                    0,
                    76,
                    78,
                    71,
                    0,
                    76,
                    79,
                    87,
                    0,
                    76,
                    82,
                    0,
                    76,
                    82,
                    68,
                    0,
                    76,
                    83,
                    72,
                    0,
                    76,
                    84,
                    0,
                    77,
                    0,
                    77,
                    67,
                    78,
                    0,
                    77,
                    70,
                    0,
                    77,
                    82,
                    68,
                    0,
                    78,
                    0,
                    78,
                    65,
                    82,
                    0,
                    78,
                    65,
                    83,
                    0,
                    78,
                    67,
                    75,
                    0,
                    78,
                    67,
                    75,
                    50,
                    0,
                    78,
                    67,
                    75,
                    51,
                    0,
                    78,
                    71,
                    0,
                    78,
                    74,
                    0,
                    78,
                    82,
                    0,
                    78,
                    83,
                    82,
                    0,
                    78,
                    83,
                    89,
                    0,
                    79,
                    0,
                    79,
                    69,
                    0,
                    79,
                    69,
                    78,
                    255,
                    0,
                    79,
                    73,
                    255,
                    255,
                    0,
                    79,
                    78,
                    255,
                    0,
                    79,
                    85,
                    0,
                    79,
                    87,
                    88,
                    255,
                    255,
                    0,
                    79,
                    88,
                    0,
                    80,
                    0,
                    80,
                    65,
                    76,
                    0,
                    80,
                    67,
                    75,
                    0,
                    80,
                    70,
                    255,
                    255,
                    0,
                    80,
                    72,
                    0,
                    80,
                    72,
                    82,
                    0,
                    81,
                    0,
                    81,
                    68,
                    0,
                    81,
                    72,
                    0,
                    81,
                    73,
                    77,
                    0,
                    81,
                    78,
                    0,
                    81,
                    79,
                    77,
                    0,
                    81,
                    81,
                    0,
                    81,
                    84,
                    0,
                    82,
                    0,
                    82,
                    65,
                    0,
                    82,
                    65,
                    73,
                    0,
                    82,
                    69,
                    84,
                    0,
                    82,
                    72,
                    0,
                    82,
                    72,
                    79,
                    0,
                    82,
                    72,
                    90,
                    0,
                    82,
                    82,
                    0,
                    82,
                    84,
                    69,
                    0,
                    82,
                    84,
                    82,
                    0,
                    83,
                    0,
                    83,
                    49,
                    0,
                    83,
                    50,
                    0,
                    83,
                    67,
                    0,
                    83,
                    72,
                    0,
                    83,
                    72,
                    67,
                    0,
                    83,
                    72,
                    88,
                    0,
                    83,
                    82,
                    0,
                    83,
                    89,
                    76,
                    0,
                    84,
                    0,
                    84,
                    45,
                    0,
                    84,
                    43,
                    0,
                    84,
                    61,
                    0,
                    84,
                    49,
                    0,
                    84,
                    50,
                    0,
                    84,
                    51,
                    0,
                    84,
                    52,
                    0,
                    84,
                    53,
                    0,
                    84,
                    67,
                    75,
                    0,
                    84,
                    67,
                    75,
                    50,
                    0,
                    84,
                    72,
                    0,
                    84,
                    82,
                    0,
                    84,
                    83,
                    255,
                    255,
                    0,
                    84,
                    83,
                    50,
                    0,
                    84,
                    83,
                    82,
                    255,
                    255,
                    0,
                    85,
                    0,
                    85,
                    72,
                    0,
                    85,
                    82,
                    0,
                    85,
                    85,
                    0,
                    85,
                    87,
                    88,
                    255,
                    255,
                    0,
                    85,
                    89,
                    88,
                    255,
                    255,
                    0,
                    86,
                    0,
                    86,
                    65,
                    0,
                    86,
                    67,
                    68,
                    0,
                    86,
                    69,
                    76,
                    0,
                    86,
                    76,
                    83,
                    0,
                    86,
                    80,
                    72,
                    0,
                    86,
                    83,
                    76,
                    0,
                    87,
                    0,
                    87,
                    72,
                    0,
                    87,
                    74,
                    0,
                    88,
                    0,
                    88,
                    83,
                    72,
                    0,
                    88,
                    83,
                    84,
                    0,
                    89,
                    0,
                    89,
                    72,
                    0,
                    89,
                    88,
                    0,
                    90,
                    0,
                    90,
                    67,
                    0,
                    90,
                    72,
                    0,
                    90,
                    72,
                    74,
                    0,
                    90,
                    82,
                    0
                }, new char[249]
                {
                    '.',
                    '\u0001',
                    '\u0002',
                    '\u0003',
                    '↘',
                    '↗',
                    '\u203f',
                    '|',
                    '‖',
                    '\u0004',
                    '\u0361',
                    'a',
                    'ɑ',
                    '\u031f',
                    'æ',
                    'ɐ',
                    'ʌ',
                    'a',
                    '\u0361',
                    'i',
                    'a',
                    '\u0303',
                    'ɔ',
                    'ɶ',
                    'ɔ',
                    '\u0361',
                    'ə',
                    '\u033a',
                    '\u02b0',
                    '\u0318',
                    'a',
                    '\u0361',
                    'ʊ',
                    'ə',
                    'ɚ',
                    'b',
                    'ʙ',
                    'β',
                    'ɓ',
                    '\u02b1',
                    '\u0324',
                    'ç',
                    '\u0740',
                    '\u0361',
                    'ɕ',
                    'ʨ',
                    'ǂ',
                    '\u0308',
                    't',
                    '\u0361',
                    'ʃ',
                    'ʧ',
                    'ʝ',
                    'c',
                    '\u0330',
                    'd',
                    '\u032a',
                    'ð',
                    'ɗ',
                    'ɖ',
                    'ɾ',
                    'ɽ',
                    'd',
                    '\u0361',
                    'z',
                    'ʣ',
                    'e',
                    'ɛ',
                    'ɛ',
                    '\u0361',
                    'ə',
                    'e',
                    '\u0361',
                    'i',
                    '\u02bc',
                    'e',
                    '\u0303',
                    'ɜ',
                    'ɝ',
                    'ʜ',
                    'ʡ',
                    'ø',
                    'ɘ',
                    'ʢ',
                    'f',
                    'g',
                    'ɡ',
                    'ɰ',
                    'ɣ',
                    'ɠ',
                    'ʟ',
                    'ʔ',
                    'h',
                    'ʕ',
                    'ħ',
                    '\u02d1',
                    'ɦ',
                    'i',
                    'ɪ',
                    'ɨ',
                    'i',
                    '\u0361',
                    'ə',
                    'j',
                    'd',
                    '\u0361',
                    'ʑ',
                    'ʥ',
                    'ɟ',
                    'd',
                    '\u0361',
                    'ʒ',
                    'ʤ',
                    'ʄ',
                    'j',
                    '\u0361',
                    'j',
                    'k',
                    'l',
                    '\u02b7',
                    '\u033b',
                    '\u02e1',
                    'ǁ',
                    'ʖ',
                    'ɫ',
                    'ɮ',
                    'ʎ',
                    '\u033c',
                    '\u02d0',
                    '\u031e',
                    'ɭ',
                    '\u031c',
                    'ɬ',
                    'ɺ',
                    'm',
                    '\u033d',
                    'ɱ',
                    '\u0339',
                    'n',
                    '\u031a',
                    '\u0303',
                    '!',
                    'ǃ',
                    'ʗ',
                    'ŋ',
                    'ɲ',
                    'ɳ',
                    '\u207f',
                    '\u032f',
                    'o',
                    'œ',
                    'œ',
                    '\u0303',
                    'ɔ',
                    '\u0361',
                    'i',
                    'o',
                    '\u0303',
                    'ɤ',
                    'o',
                    '\u0361',
                    'ə',
                    'ɵ',
                    'p',
                    '\u02b2',
                    'ʘ',
                    'p',
                    '\u0361',
                    'f',
                    'ɸ',
                    '\u02e4',
                    'ɒ',
                    'ɢ',
                    'χ',
                    'ʛ',
                    'ɴ',
                    'ʠ',
                    'ʀ',
                    'q',
                    'ɻ',
                    'ɹ',
                    '\u031d',
                    '\u0331',
                    'ʁ',
                    '\u02de',
                    '\u02b4',
                    'r',
                    '\u0320',
                    '\u0319',
                    's',
                    '\u02c8',
                    '\u02cc',
                    'ɕ',
                    'ʃ',
                    'ʆ',
                    'ɧ',
                    'ʂ',
                    '\u0329',
                    't',
                    '↓',
                    '↑',
                    '→',
                    '\u030f',
                    '\u0300',
                    '\u0304',
                    '\u0301',
                    '\u030b',
                    'ǀ',
                    'ʇ',
                    'θ',
                    'ʈ',
                    't',
                    '\u0361',
                    's',
                    'ʦ',
                    't',
                    '\u0361',
                    'ʂ',
                    'u',
                    'ʊ',
                    'ɞ',
                    'ɯ',
                    'u',
                    '\u0361',
                    'ə',
                    'y',
                    '\u0361',
                    'ə',
                    'v',
                    'ʋ',
                    '\u032c',
                    '\u02e0',
                    '\u030a',
                    '\u0334',
                    '\u0325',
                    'w',
                    'ʍ',
                    'ɥ',
                    'x',
                    '\u02d8',
                    '\u0306',
                    'y',
                    'ʏ',
                    'ʉ',
                    'z',
                    'ʑ',
                    'ʒ',
                    'ʓ',
                    'ʐ'
                }),
                new(1028, 52, new byte[260]
                {
                    48,
                    48,
                    50,
                    49,
                    0,
                    48,
                    48,
                    50,
                    54,
                    0,
                    48,
                    48,
                    50,
                    65,
                    0,
                    48,
                    48,
                    50,
                    66,
                    0,
                    48,
                    48,
                    50,
                    67,
                    0,
                    48,
                    48,
                    50,
                    68,
                    0,
                    48,
                    48,
                    50,
                    69,
                    0,
                    48,
                    48,
                    51,
                    70,
                    0,
                    48,
                    48,
                    53,
                    70,
                    0,
                    48,
                    50,
                    67,
                    55,
                    0,
                    48,
                    50,
                    67,
                    57,
                    0,
                    48,
                    50,
                    67,
                    65,
                    0,
                    48,
                    50,
                    67,
                    66,
                    0,
                    48,
                    50,
                    68,
                    57,
                    0,
                    51,
                    48,
                    48,
                    48,
                    0,
                    51,
                    49,
                    48,
                    53,
                    0,
                    51,
                    49,
                    48,
                    54,
                    0,
                    51,
                    49,
                    48,
                    55,
                    0,
                    51,
                    49,
                    48,
                    56,
                    0,
                    51,
                    49,
                    48,
                    57,
                    0,
                    51,
                    49,
                    48,
                    65,
                    0,
                    51,
                    49,
                    48,
                    66,
                    0,
                    51,
                    49,
                    48,
                    67,
                    0,
                    51,
                    49,
                    48,
                    68,
                    0,
                    51,
                    49,
                    48,
                    69,
                    0,
                    51,
                    49,
                    48,
                    70,
                    0,
                    51,
                    49,
                    49,
                    48,
                    0,
                    51,
                    49,
                    49,
                    49,
                    0,
                    51,
                    49,
                    49,
                    50,
                    0,
                    51,
                    49,
                    49,
                    51,
                    0,
                    51,
                    49,
                    49,
                    52,
                    0,
                    51,
                    49,
                    49,
                    53,
                    0,
                    51,
                    49,
                    49,
                    54,
                    0,
                    51,
                    49,
                    49,
                    55,
                    0,
                    51,
                    49,
                    49,
                    56,
                    0,
                    51,
                    49,
                    49,
                    57,
                    0,
                    51,
                    49,
                    49,
                    65,
                    0,
                    51,
                    49,
                    49,
                    66,
                    0,
                    51,
                    49,
                    49,
                    67,
                    0,
                    51,
                    49,
                    49,
                    68,
                    0,
                    51,
                    49,
                    49,
                    69,
                    0,
                    51,
                    49,
                    49,
                    70,
                    0,
                    51,
                    49,
                    50,
                    48,
                    0,
                    51,
                    49,
                    50,
                    49,
                    0,
                    51,
                    49,
                    50,
                    50,
                    0,
                    51,
                    49,
                    50,
                    51,
                    0,
                    51,
                    49,
                    50,
                    52,
                    0,
                    51,
                    49,
                    50,
                    53,
                    0,
                    51,
                    49,
                    50,
                    54,
                    0,
                    51,
                    49,
                    50,
                    55,
                    0,
                    51,
                    49,
                    50,
                    56,
                    0,
                    51,
                    49,
                    50,
                    57,
                    0
                }, new char[52]
                {
                    '!',
                    '&',
                    '*',
                    '+',
                    ',',
                    '-',
                    '.',
                    '?',
                    '_',
                    '\u02c7',
                    '\u02c9',
                    '\u02ca',
                    '\u02cb',
                    '\u02d9',
                    '\u3000',
                    'ㄅ',
                    'ㄆ',
                    'ㄇ',
                    'ㄈ',
                    'ㄉ',
                    'ㄊ',
                    'ㄋ',
                    'ㄌ',
                    'ㄍ',
                    'ㄎ',
                    'ㄏ',
                    'ㄐ',
                    'ㄑ',
                    'ㄒ',
                    'ㄓ',
                    'ㄔ',
                    'ㄕ',
                    'ㄖ',
                    'ㄗ',
                    'ㄘ',
                    'ㄙ',
                    'ㄚ',
                    'ㄛ',
                    'ㄜ',
                    'ㄝ',
                    'ㄞ',
                    'ㄟ',
                    'ㄠ',
                    'ㄡ',
                    'ㄢ',
                    'ㄣ',
                    'ㄤ',
                    'ㄥ',
                    'ㄦ',
                    'ㄧ',
                    'ㄨ',
                    'ㄩ'
                }),
                new(1031, 53, new byte[129]
                {
                    45,
                    0,
                    33,
                    0,
                    38,
                    0,
                    44,
                    0,
                    46,
                    0,
                    58,
                    0,
                    63,
                    0,
                    94,
                    0,
                    95,
                    0,
                    126,
                    0,
                    49,
                    0,
                    50,
                    0,
                    65,
                    0,
                    65,
                    87,
                    0,
                    65,
                    88,
                    0,
                    65,
                    89,
                    0,
                    66,
                    0,
                    67,
                    72,
                    0,
                    68,
                    0,
                    69,
                    72,
                    0,
                    69,
                    85,
                    0,
                    69,
                    89,
                    0,
                    70,
                    0,
                    71,
                    0,
                    72,
                    0,
                    73,
                    72,
                    0,
                    73,
                    89,
                    0,
                    74,
                    72,
                    0,
                    75,
                    0,
                    76,
                    0,
                    77,
                    0,
                    78,
                    0,
                    78,
                    71,
                    0,
                    79,
                    69,
                    0,
                    79,
                    72,
                    0,
                    79,
                    87,
                    0,
                    79,
                    89,
                    0,
                    80,
                    0,
                    80,
                    70,
                    0,
                    82,
                    0,
                    83,
                    0,
                    83,
                    72,
                    0,
                    84,
                    0,
                    84,
                    83,
                    0,
                    85,
                    69,
                    0,
                    85,
                    72,
                    0,
                    85,
                    87,
                    0,
                    85,
                    89,
                    0,
                    86,
                    0,
                    88,
                    0,
                    89,
                    0,
                    90,
                    0,
                    90,
                    72,
                    0
                }, new char[53]
                {
                    '\u0001',
                    '\u0002',
                    '\u0003',
                    '\u0004',
                    '\u0005',
                    '\f',
                    '\u0006',
                    '\b',
                    '\a',
                    '\v',
                    '\t',
                    '\n',
                    '\r',
                    '\u000e',
                    '\u000f',
                    '\u0010',
                    '\u0011',
                    '\u0013',
                    '\u0012',
                    '\u0014',
                    '\u0015',
                    '\u0016',
                    '\u0017',
                    '\u0018',
                    '\u0019',
                    '\u001a',
                    '\u001b',
                    '\u001c',
                    '\u001d',
                    '\u001e',
                    '\u001f',
                    ' ',
                    '!',
                    '"',
                    '#',
                    '$',
                    '%',
                    '&',
                    '\'',
                    '(',
                    ')',
                    '*',
                    '+',
                    ',',
                    '-',
                    '.',
                    '/',
                    '0',
                    '1',
                    '2',
                    '3',
                    '4',
                    '5'
                }),
                new(1033, 49, new byte[121]
                {
                    45,
                    0,
                    33,
                    0,
                    38,
                    0,
                    44,
                    0,
                    46,
                    0,
                    63,
                    0,
                    95,
                    0,
                    49,
                    0,
                    50,
                    0,
                    65,
                    65,
                    0,
                    65,
                    69,
                    0,
                    65,
                    72,
                    0,
                    65,
                    79,
                    0,
                    65,
                    87,
                    0,
                    65,
                    88,
                    0,
                    65,
                    89,
                    0,
                    66,
                    0,
                    67,
                    72,
                    0,
                    68,
                    0,
                    68,
                    72,
                    0,
                    69,
                    72,
                    0,
                    69,
                    82,
                    0,
                    69,
                    89,
                    0,
                    70,
                    0,
                    71,
                    0,
                    72,
                    0,
                    73,
                    72,
                    0,
                    73,
                    89,
                    0,
                    74,
                    72,
                    0,
                    75,
                    0,
                    76,
                    0,
                    77,
                    0,
                    78,
                    0,
                    78,
                    71,
                    0,
                    79,
                    87,
                    0,
                    79,
                    89,
                    0,
                    80,
                    0,
                    82,
                    0,
                    83,
                    0,
                    83,
                    72,
                    0,
                    84,
                    0,
                    84,
                    72,
                    0,
                    85,
                    72,
                    0,
                    85,
                    87,
                    0,
                    86,
                    0,
                    87,
                    0,
                    89,
                    0,
                    90,
                    0,
                    90,
                    72,
                    0
                }, new char[49]
                {
                    '\u0001',
                    '\u0002',
                    '\u0003',
                    '\u0004',
                    '\u0005',
                    '\u0006',
                    '\a',
                    '\b',
                    '\t',
                    '\n',
                    '\v',
                    '\f',
                    '\r',
                    '\u000e',
                    '\u000f',
                    '\u0010',
                    '\u0011',
                    '\u0012',
                    '\u0013',
                    '\u0014',
                    '\u0015',
                    '\u0016',
                    '\u0017',
                    '\u0018',
                    '\u0019',
                    '\u001a',
                    '\u001b',
                    '\u001c',
                    '\u001d',
                    '\u001e',
                    '\u001f',
                    ' ',
                    '!',
                    '"',
                    '#',
                    '$',
                    '%',
                    '&',
                    '\'',
                    '(',
                    ')',
                    '*',
                    '+',
                    ',',
                    '-',
                    '.',
                    '/',
                    '0',
                    '1'
                }),
                new(1034, 35, new byte[76]
                {
                    45,
                    0,
                    33,
                    0,
                    38,
                    0,
                    44,
                    0,
                    46,
                    0,
                    63,
                    0,
                    95,
                    0,
                    49,
                    0,
                    50,
                    0,
                    65,
                    0,
                    66,
                    0,
                    67,
                    72,
                    0,
                    68,
                    0,
                    69,
                    0,
                    70,
                    0,
                    71,
                    0,
                    73,
                    0,
                    74,
                    0,
                    74,
                    74,
                    0,
                    75,
                    0,
                    76,
                    0,
                    76,
                    76,
                    0,
                    77,
                    0,
                    78,
                    0,
                    78,
                    74,
                    0,
                    79,
                    0,
                    80,
                    0,
                    82,
                    0,
                    82,
                    82,
                    0,
                    83,
                    0,
                    84,
                    0,
                    84,
                    72,
                    0,
                    85,
                    0,
                    87,
                    0,
                    88,
                    0
                }, new char[35]
                {
                    '\u0001',
                    '\u0002',
                    '\u0003',
                    '\u0004',
                    '\u0005',
                    '\u0006',
                    '\a',
                    '\b',
                    '\t',
                    '\n',
                    '\u0012',
                    '\u0015',
                    '\u0010',
                    '\v',
                    '\u0017',
                    '\u0014',
                    '\f',
                    '!',
                    '\u0016',
                    '\u0013',
                    '\u001d',
                    '\u001e',
                    '\u001a',
                    '\u001b',
                    '\u001c',
                    '\r',
                    '\u0011',
                    '\u001f',
                    ' ',
                    '\u0018',
                    '\u000f',
                    '#',
                    '\u000e',
                    '"',
                    '\u0019'
                }),
                new(1036, 42, new byte[100]
                {
                    45,
                    0,
                    33,
                    0,
                    38,
                    0,
                    44,
                    0,
                    46,
                    0,
                    63,
                    0,
                    95,
                    0,
                    126,
                    0,
                    49,
                    0,
                    65,
                    0,
                    65,
                    65,
                    0,
                    65,
                    88,
                    0,
                    66,
                    0,
                    68,
                    0,
                    69,
                    72,
                    0,
                    69,
                    85,
                    0,
                    69,
                    89,
                    0,
                    70,
                    0,
                    71,
                    0,
                    72,
                    89,
                    0,
                    73,
                    89,
                    0,
                    75,
                    0,
                    76,
                    0,
                    77,
                    0,
                    78,
                    0,
                    78,
                    71,
                    0,
                    78,
                    74,
                    0,
                    79,
                    69,
                    0,
                    79,
                    72,
                    0,
                    79,
                    87,
                    0,
                    80,
                    0,
                    82,
                    0,
                    83,
                    0,
                    83,
                    72,
                    0,
                    84,
                    0,
                    85,
                    87,
                    0,
                    85,
                    89,
                    0,
                    86,
                    0,
                    87,
                    0,
                    89,
                    0,
                    90,
                    0,
                    90,
                    72,
                    0
                }, new char[42]
                {
                    '\u0001',
                    '\u0002',
                    '\u0003',
                    '\u0004',
                    '\u0005',
                    '\u0006',
                    '\a',
                    '\t',
                    '\b',
                    '\v',
                    '\n',
                    '\r',
                    '\u000e',
                    '\u000f',
                    '\u0010',
                    '\u001e',
                    '\u0011',
                    '\u0012',
                    '\u0013',
                    '\u0014',
                    '\u0016',
                    '\u0017',
                    '\u0018',
                    '\u0019',
                    '\u001a',
                    '\u001b',
                    '\u001c',
                    '\u001d',
                    '\f',
                    '\u001f',
                    ' ',
                    '!',
                    '"',
                    '#',
                    '$',
                    '%',
                    '\u0015',
                    '&',
                    '\'',
                    '(',
                    ')',
                    '*'
                }),
                new(1041, 102, new byte[510]
                {
                    48,
                    48,
                    50,
                    49,
                    0,
                    48,
                    48,
                    50,
                    55,
                    0,
                    48,
                    48,
                    50,
                    66,
                    0,
                    48,
                    48,
                    50,
                    69,
                    0,
                    48,
                    48,
                    51,
                    70,
                    0,
                    48,
                    48,
                    53,
                    70,
                    0,
                    48,
                    48,
                    55,
                    67,
                    0,
                    51,
                    48,
                    57,
                    67,
                    0,
                    51,
                    48,
                    65,
                    49,
                    0,
                    51,
                    48,
                    65,
                    50,
                    0,
                    51,
                    48,
                    65,
                    51,
                    0,
                    51,
                    48,
                    65,
                    52,
                    0,
                    51,
                    48,
                    65,
                    53,
                    0,
                    51,
                    48,
                    65,
                    54,
                    0,
                    51,
                    48,
                    65,
                    55,
                    0,
                    51,
                    48,
                    65,
                    56,
                    0,
                    51,
                    48,
                    65,
                    57,
                    0,
                    51,
                    48,
                    65,
                    65,
                    0,
                    51,
                    48,
                    65,
                    66,
                    0,
                    51,
                    48,
                    65,
                    67,
                    0,
                    51,
                    48,
                    65,
                    68,
                    0,
                    51,
                    48,
                    65,
                    69,
                    0,
                    51,
                    48,
                    65,
                    70,
                    0,
                    51,
                    48,
                    66,
                    48,
                    0,
                    51,
                    48,
                    66,
                    49,
                    0,
                    51,
                    48,
                    66,
                    50,
                    0,
                    51,
                    48,
                    66,
                    51,
                    0,
                    51,
                    48,
                    66,
                    52,
                    0,
                    51,
                    48,
                    66,
                    53,
                    0,
                    51,
                    48,
                    66,
                    54,
                    0,
                    51,
                    48,
                    66,
                    55,
                    0,
                    51,
                    48,
                    66,
                    56,
                    0,
                    51,
                    48,
                    66,
                    57,
                    0,
                    51,
                    48,
                    66,
                    65,
                    0,
                    51,
                    48,
                    66,
                    66,
                    0,
                    51,
                    48,
                    66,
                    67,
                    0,
                    51,
                    48,
                    66,
                    68,
                    0,
                    51,
                    48,
                    66,
                    69,
                    0,
                    51,
                    48,
                    66,
                    70,
                    0,
                    51,
                    48,
                    67,
                    48,
                    0,
                    51,
                    48,
                    67,
                    49,
                    0,
                    51,
                    48,
                    67,
                    50,
                    0,
                    51,
                    48,
                    67,
                    51,
                    0,
                    51,
                    48,
                    67,
                    52,
                    0,
                    51,
                    48,
                    67,
                    53,
                    0,
                    51,
                    48,
                    67,
                    54,
                    0,
                    51,
                    48,
                    67,
                    55,
                    0,
                    51,
                    48,
                    67,
                    56,
                    0,
                    51,
                    48,
                    67,
                    57,
                    0,
                    51,
                    48,
                    67,
                    65,
                    0,
                    51,
                    48,
                    67,
                    66,
                    0,
                    51,
                    48,
                    67,
                    67,
                    0,
                    51,
                    48,
                    67,
                    68,
                    0,
                    51,
                    48,
                    67,
                    69,
                    0,
                    51,
                    48,
                    67,
                    70,
                    0,
                    51,
                    48,
                    68,
                    48,
                    0,
                    51,
                    48,
                    68,
                    49,
                    0,
                    51,
                    48,
                    68,
                    50,
                    0,
                    51,
                    48,
                    68,
                    51,
                    0,
                    51,
                    48,
                    68,
                    52,
                    0,
                    51,
                    48,
                    68,
                    53,
                    0,
                    51,
                    48,
                    68,
                    54,
                    0,
                    51,
                    48,
                    68,
                    55,
                    0,
                    51,
                    48,
                    68,
                    56,
                    0,
                    51,
                    48,
                    68,
                    57,
                    0,
                    51,
                    48,
                    68,
                    65,
                    0,
                    51,
                    48,
                    68,
                    66,
                    0,
                    51,
                    48,
                    68,
                    67,
                    0,
                    51,
                    48,
                    68,
                    68,
                    0,
                    51,
                    48,
                    68,
                    69,
                    0,
                    51,
                    48,
                    68,
                    70,
                    0,
                    51,
                    48,
                    69,
                    48,
                    0,
                    51,
                    48,
                    69,
                    49,
                    0,
                    51,
                    48,
                    69,
                    50,
                    0,
                    51,
                    48,
                    69,
                    51,
                    0,
                    51,
                    48,
                    69,
                    52,
                    0,
                    51,
                    48,
                    69,
                    53,
                    0,
                    51,
                    48,
                    69,
                    54,
                    0,
                    51,
                    48,
                    69,
                    55,
                    0,
                    51,
                    48,
                    69,
                    56,
                    0,
                    51,
                    48,
                    69,
                    57,
                    0,
                    51,
                    48,
                    69,
                    65,
                    0,
                    51,
                    48,
                    69,
                    66,
                    0,
                    51,
                    48,
                    69,
                    67,
                    0,
                    51,
                    48,
                    69,
                    68,
                    0,
                    51,
                    48,
                    69,
                    69,
                    0,
                    51,
                    48,
                    69,
                    70,
                    0,
                    51,
                    48,
                    70,
                    48,
                    0,
                    51,
                    48,
                    70,
                    49,
                    0,
                    51,
                    48,
                    70,
                    50,
                    0,
                    51,
                    48,
                    70,
                    51,
                    0,
                    51,
                    48,
                    70,
                    52,
                    0,
                    51,
                    48,
                    70,
                    53,
                    0,
                    51,
                    48,
                    70,
                    54,
                    0,
                    51,
                    48,
                    70,
                    55,
                    0,
                    51,
                    48,
                    70,
                    56,
                    0,
                    51,
                    48,
                    70,
                    57,
                    0,
                    51,
                    48,
                    70,
                    65,
                    0,
                    51,
                    48,
                    70,
                    66,
                    0,
                    51,
                    48,
                    70,
                    67,
                    0,
                    51,
                    48,
                    70,
                    68,
                    0,
                    51,
                    48,
                    70,
                    69,
                    0
                }, new char[102]
                {
                    '!',
                    '\'',
                    '+',
                    '.',
                    '?',
                    '_',
                    '|',
                    '\u309c',
                    'ァ',
                    'ア',
                    'ィ',
                    'イ',
                    'ゥ',
                    'ウ',
                    'ェ',
                    'エ',
                    'ォ',
                    'オ',
                    'カ',
                    'ガ',
                    'キ',
                    'ギ',
                    'ク',
                    'グ',
                    'ケ',
                    'ゲ',
                    'コ',
                    'ゴ',
                    'サ',
                    'ザ',
                    'シ',
                    'ジ',
                    'ス',
                    'ズ',
                    'セ',
                    'ゼ',
                    'ソ',
                    'ゾ',
                    'タ',
                    'ダ',
                    'チ',
                    'ヂ',
                    'ッ',
                    'ツ',
                    'ヅ',
                    'テ',
                    'デ',
                    'ト',
                    'ド',
                    'ナ',
                    'ニ',
                    'ヌ',
                    'ネ',
                    'ノ',
                    'ハ',
                    'バ',
                    'パ',
                    'ヒ',
                    'ビ',
                    'ピ',
                    'フ',
                    'ブ',
                    'プ',
                    'ヘ',
                    'ベ',
                    'ペ',
                    'ホ',
                    'ボ',
                    'ポ',
                    'マ',
                    'ミ',
                    'ム',
                    'メ',
                    'モ',
                    'ャ',
                    'ヤ',
                    'ュ',
                    'ユ',
                    'ョ',
                    'ヨ',
                    'ラ',
                    'リ',
                    'ル',
                    'レ',
                    'ロ',
                    'ヮ',
                    'ワ',
                    'ヰ',
                    'ヱ',
                    'ヲ',
                    'ン',
                    'ヴ',
                    'ヵ',
                    'ヶ',
                    'ヷ',
                    'ヸ',
                    'ヹ',
                    'ヺ',
                    '・',
                    '\u30fc',
                    '\u30fd',
                    '\u30fe'
                }),
                new(2052, 422, new byte[1755]
                {
                    45,
                    0,
                    33,
                    0,
                    38,
                    0,
                    42,
                    0,
                    44,
                    0,
                    46,
                    0,
                    63,
                    0,
                    95,
                    0,
                    43,
                    0,
                    49,
                    0,
                    50,
                    0,
                    51,
                    0,
                    52,
                    0,
                    53,
                    0,
                    65,
                    0,
                    65,
                    73,
                    0,
                    65,
                    78,
                    0,
                    65,
                    78,
                    71,
                    0,
                    65,
                    79,
                    0,
                    66,
                    65,
                    0,
                    66,
                    65,
                    73,
                    0,
                    66,
                    65,
                    78,
                    0,
                    66,
                    65,
                    78,
                    71,
                    0,
                    66,
                    65,
                    79,
                    0,
                    66,
                    69,
                    73,
                    0,
                    66,
                    69,
                    78,
                    0,
                    66,
                    69,
                    78,
                    71,
                    0,
                    66,
                    73,
                    0,
                    66,
                    73,
                    65,
                    78,
                    0,
                    66,
                    73,
                    65,
                    79,
                    0,
                    66,
                    73,
                    69,
                    0,
                    66,
                    73,
                    78,
                    0,
                    66,
                    73,
                    78,
                    71,
                    0,
                    66,
                    79,
                    0,
                    66,
                    85,
                    0,
                    67,
                    65,
                    0,
                    67,
                    65,
                    73,
                    0,
                    67,
                    65,
                    78,
                    0,
                    67,
                    65,
                    78,
                    71,
                    0,
                    67,
                    65,
                    79,
                    0,
                    67,
                    69,
                    0,
                    67,
                    69,
                    78,
                    0,
                    67,
                    69,
                    78,
                    71,
                    0,
                    67,
                    72,
                    65,
                    0,
                    67,
                    72,
                    65,
                    73,
                    0,
                    67,
                    72,
                    65,
                    78,
                    0,
                    67,
                    72,
                    65,
                    78,
                    71,
                    0,
                    67,
                    72,
                    65,
                    79,
                    0,
                    67,
                    72,
                    69,
                    0,
                    67,
                    72,
                    69,
                    78,
                    0,
                    67,
                    72,
                    69,
                    78,
                    71,
                    0,
                    67,
                    72,
                    73,
                    0,
                    67,
                    72,
                    79,
                    78,
                    71,
                    0,
                    67,
                    72,
                    79,
                    85,
                    0,
                    67,
                    72,
                    85,
                    0,
                    67,
                    72,
                    85,
                    65,
                    73,
                    0,
                    67,
                    72,
                    85,
                    65,
                    78,
                    0,
                    67,
                    72,
                    85,
                    65,
                    78,
                    71,
                    0,
                    67,
                    72,
                    85,
                    73,
                    0,
                    67,
                    72,
                    85,
                    78,
                    0,
                    67,
                    72,
                    85,
                    79,
                    0,
                    67,
                    73,
                    0,
                    67,
                    79,
                    78,
                    71,
                    0,
                    67,
                    79,
                    85,
                    0,
                    67,
                    85,
                    0,
                    67,
                    85,
                    65,
                    78,
                    0,
                    67,
                    85,
                    73,
                    0,
                    67,
                    85,
                    78,
                    0,
                    67,
                    85,
                    79,
                    0,
                    68,
                    65,
                    0,
                    68,
                    65,
                    73,
                    0,
                    68,
                    65,
                    78,
                    0,
                    68,
                    65,
                    78,
                    71,
                    0,
                    68,
                    65,
                    79,
                    0,
                    68,
                    69,
                    0,
                    68,
                    69,
                    73,
                    0,
                    68,
                    69,
                    78,
                    0,
                    68,
                    69,
                    78,
                    71,
                    0,
                    68,
                    73,
                    0,
                    68,
                    73,
                    65,
                    0,
                    68,
                    73,
                    65,
                    78,
                    0,
                    68,
                    73,
                    65,
                    79,
                    0,
                    68,
                    73,
                    69,
                    0,
                    68,
                    73,
                    78,
                    71,
                    0,
                    68,
                    73,
                    85,
                    0,
                    68,
                    79,
                    78,
                    71,
                    0,
                    68,
                    79,
                    85,
                    0,
                    68,
                    85,
                    0,
                    68,
                    85,
                    65,
                    78,
                    0,
                    68,
                    85,
                    73,
                    0,
                    68,
                    85,
                    78,
                    0,
                    68,
                    85,
                    79,
                    0,
                    69,
                    0,
                    69,
                    73,
                    0,
                    69,
                    78,
                    0,
                    69,
                    82,
                    0,
                    70,
                    65,
                    0,
                    70,
                    65,
                    78,
                    0,
                    70,
                    65,
                    78,
                    71,
                    0,
                    70,
                    69,
                    73,
                    0,
                    70,
                    69,
                    78,
                    0,
                    70,
                    69,
                    78,
                    71,
                    0,
                    70,
                    79,
                    0,
                    70,
                    79,
                    85,
                    0,
                    70,
                    85,
                    0,
                    71,
                    65,
                    0,
                    71,
                    65,
                    73,
                    0,
                    71,
                    65,
                    78,
                    0,
                    71,
                    65,
                    78,
                    71,
                    0,
                    71,
                    65,
                    79,
                    0,
                    71,
                    69,
                    0,
                    71,
                    69,
                    73,
                    0,
                    71,
                    69,
                    78,
                    0,
                    71,
                    69,
                    78,
                    71,
                    0,
                    71,
                    79,
                    78,
                    71,
                    0,
                    71,
                    79,
                    85,
                    0,
                    71,
                    85,
                    0,
                    71,
                    85,
                    65,
                    0,
                    71,
                    85,
                    65,
                    73,
                    0,
                    71,
                    85,
                    65,
                    78,
                    0,
                    71,
                    85,
                    65,
                    78,
                    71,
                    0,
                    71,
                    85,
                    73,
                    0,
                    71,
                    85,
                    78,
                    0,
                    71,
                    85,
                    79,
                    0,
                    72,
                    65,
                    0,
                    72,
                    65,
                    73,
                    0,
                    72,
                    65,
                    78,
                    0,
                    72,
                    65,
                    78,
                    71,
                    0,
                    72,
                    65,
                    79,
                    0,
                    72,
                    69,
                    0,
                    72,
                    69,
                    73,
                    0,
                    72,
                    69,
                    78,
                    0,
                    72,
                    69,
                    78,
                    71,
                    0,
                    72,
                    79,
                    78,
                    71,
                    0,
                    72,
                    79,
                    85,
                    0,
                    72,
                    85,
                    0,
                    72,
                    85,
                    65,
                    0,
                    72,
                    85,
                    65,
                    73,
                    0,
                    72,
                    85,
                    65,
                    78,
                    0,
                    72,
                    85,
                    65,
                    78,
                    71,
                    0,
                    72,
                    85,
                    73,
                    0,
                    72,
                    85,
                    78,
                    0,
                    72,
                    85,
                    79,
                    0,
                    74,
                    73,
                    0,
                    74,
                    73,
                    65,
                    0,
                    74,
                    73,
                    65,
                    78,
                    0,
                    74,
                    73,
                    65,
                    78,
                    71,
                    0,
                    74,
                    73,
                    65,
                    79,
                    0,
                    74,
                    73,
                    69,
                    0,
                    74,
                    73,
                    78,
                    0,
                    74,
                    73,
                    78,
                    71,
                    0,
                    74,
                    73,
                    79,
                    78,
                    71,
                    0,
                    74,
                    73,
                    85,
                    0,
                    74,
                    85,
                    0,
                    74,
                    85,
                    65,
                    78,
                    0,
                    74,
                    85,
                    69,
                    0,
                    74,
                    85,
                    78,
                    0,
                    75,
                    65,
                    0,
                    75,
                    65,
                    73,
                    0,
                    75,
                    65,
                    78,
                    0,
                    75,
                    65,
                    78,
                    71,
                    0,
                    75,
                    65,
                    79,
                    0,
                    75,
                    69,
                    0,
                    75,
                    69,
                    73,
                    0,
                    75,
                    69,
                    78,
                    0,
                    75,
                    69,
                    78,
                    71,
                    0,
                    75,
                    79,
                    78,
                    71,
                    0,
                    75,
                    79,
                    85,
                    0,
                    75,
                    85,
                    0,
                    75,
                    85,
                    65,
                    0,
                    75,
                    85,
                    65,
                    73,
                    0,
                    75,
                    85,
                    65,
                    78,
                    0,
                    75,
                    85,
                    65,
                    78,
                    71,
                    0,
                    75,
                    85,
                    73,
                    0,
                    75,
                    85,
                    78,
                    0,
                    75,
                    85,
                    79,
                    0,
                    76,
                    65,
                    0,
                    76,
                    65,
                    73,
                    0,
                    76,
                    65,
                    78,
                    0,
                    76,
                    65,
                    78,
                    71,
                    0,
                    76,
                    65,
                    79,
                    0,
                    76,
                    69,
                    0,
                    76,
                    69,
                    73,
                    0,
                    76,
                    69,
                    78,
                    71,
                    0,
                    76,
                    73,
                    0,
                    76,
                    73,
                    65,
                    0,
                    76,
                    73,
                    65,
                    78,
                    0,
                    76,
                    73,
                    65,
                    78,
                    71,
                    0,
                    76,
                    73,
                    65,
                    79,
                    0,
                    76,
                    73,
                    69,
                    0,
                    76,
                    73,
                    78,
                    0,
                    76,
                    73,
                    78,
                    71,
                    0,
                    76,
                    73,
                    85,
                    0,
                    76,
                    79,
                    0,
                    76,
                    79,
                    78,
                    71,
                    0,
                    76,
                    79,
                    85,
                    0,
                    76,
                    85,
                    0,
                    76,
                    85,
                    65,
                    78,
                    0,
                    76,
                    85,
                    69,
                    0,
                    76,
                    85,
                    78,
                    0,
                    76,
                    85,
                    79,
                    0,
                    76,
                    86,
                    0,
                    77,
                    65,
                    0,
                    77,
                    65,
                    73,
                    0,
                    77,
                    65,
                    78,
                    0,
                    77,
                    65,
                    78,
                    71,
                    0,
                    77,
                    65,
                    79,
                    0,
                    77,
                    69,
                    0,
                    77,
                    69,
                    73,
                    0,
                    77,
                    69,
                    78,
                    0,
                    77,
                    69,
                    78,
                    71,
                    0,
                    77,
                    73,
                    0,
                    77,
                    73,
                    65,
                    78,
                    0,
                    77,
                    73,
                    65,
                    79,
                    0,
                    77,
                    73,
                    69,
                    0,
                    77,
                    73,
                    78,
                    0,
                    77,
                    73,
                    78,
                    71,
                    0,
                    77,
                    73,
                    85,
                    0,
                    77,
                    79,
                    0,
                    77,
                    79,
                    85,
                    0,
                    77,
                    85,
                    0,
                    78,
                    65,
                    0,
                    78,
                    65,
                    73,
                    0,
                    78,
                    65,
                    78,
                    0,
                    78,
                    65,
                    78,
                    71,
                    0,
                    78,
                    65,
                    79,
                    0,
                    78,
                    69,
                    0,
                    78,
                    69,
                    73,
                    0,
                    78,
                    69,
                    78,
                    0,
                    78,
                    69,
                    78,
                    71,
                    0,
                    78,
                    73,
                    0,
                    78,
                    73,
                    65,
                    78,
                    0,
                    78,
                    73,
                    65,
                    78,
                    71,
                    0,
                    78,
                    73,
                    65,
                    79,
                    0,
                    78,
                    73,
                    69,
                    0,
                    78,
                    73,
                    78,
                    0,
                    78,
                    73,
                    78,
                    71,
                    0,
                    78,
                    73,
                    85,
                    0,
                    78,
                    79,
                    78,
                    71,
                    0,
                    78,
                    79,
                    85,
                    0,
                    78,
                    85,
                    0,
                    78,
                    85,
                    65,
                    78,
                    0,
                    78,
                    85,
                    69,
                    0,
                    78,
                    85,
                    79,
                    0,
                    78,
                    86,
                    0,
                    79,
                    0,
                    79,
                    85,
                    0,
                    80,
                    65,
                    0,
                    80,
                    65,
                    73,
                    0,
                    80,
                    65,
                    78,
                    0,
                    80,
                    65,
                    78,
                    71,
                    0,
                    80,
                    65,
                    79,
                    0,
                    80,
                    69,
                    73,
                    0,
                    80,
                    69,
                    78,
                    0,
                    80,
                    69,
                    78,
                    71,
                    0,
                    80,
                    73,
                    0,
                    80,
                    73,
                    65,
                    78,
                    0,
                    80,
                    73,
                    65,
                    79,
                    0,
                    80,
                    73,
                    69,
                    0,
                    80,
                    73,
                    78,
                    0,
                    80,
                    73,
                    78,
                    71,
                    0,
                    80,
                    79,
                    0,
                    80,
                    79,
                    85,
                    0,
                    80,
                    85,
                    0,
                    81,
                    73,
                    0,
                    81,
                    73,
                    65,
                    0,
                    81,
                    73,
                    65,
                    78,
                    0,
                    81,
                    73,
                    65,
                    78,
                    71,
                    0,
                    81,
                    73,
                    65,
                    79,
                    0,
                    81,
                    73,
                    69,
                    0,
                    81,
                    73,
                    78,
                    0,
                    81,
                    73,
                    78,
                    71,
                    0,
                    81,
                    73,
                    79,
                    78,
                    71,
                    0,
                    81,
                    73,
                    85,
                    0,
                    81,
                    85,
                    0,
                    81,
                    85,
                    65,
                    78,
                    0,
                    81,
                    85,
                    69,
                    0,
                    81,
                    85,
                    78,
                    0,
                    82,
                    65,
                    78,
                    0,
                    82,
                    65,
                    78,
                    71,
                    0,
                    82,
                    65,
                    79,
                    0,
                    82,
                    69,
                    0,
                    82,
                    69,
                    78,
                    0,
                    82,
                    69,
                    78,
                    71,
                    0,
                    82,
                    73,
                    0,
                    82,
                    79,
                    78,
                    71,
                    0,
                    82,
                    79,
                    85,
                    0,
                    82,
                    85,
                    0,
                    82,
                    85,
                    65,
                    78,
                    0,
                    82,
                    85,
                    73,
                    0,
                    82,
                    85,
                    78,
                    0,
                    82,
                    85,
                    79,
                    0,
                    83,
                    65,
                    0,
                    83,
                    65,
                    73,
                    0,
                    83,
                    65,
                    78,
                    0,
                    83,
                    65,
                    78,
                    71,
                    0,
                    83,
                    65,
                    79,
                    0,
                    83,
                    69,
                    0,
                    83,
                    69,
                    78,
                    0,
                    83,
                    69,
                    78,
                    71,
                    0,
                    83,
                    72,
                    65,
                    0,
                    83,
                    72,
                    65,
                    73,
                    0,
                    83,
                    72,
                    65,
                    78,
                    0,
                    83,
                    72,
                    65,
                    78,
                    71,
                    0,
                    83,
                    72,
                    65,
                    79,
                    0,
                    83,
                    72,
                    69,
                    0,
                    83,
                    72,
                    69,
                    73,
                    0,
                    83,
                    72,
                    69,
                    78,
                    0,
                    83,
                    72,
                    69,
                    78,
                    71,
                    0,
                    83,
                    72,
                    73,
                    0,
                    83,
                    72,
                    79,
                    85,
                    0,
                    83,
                    72,
                    85,
                    0,
                    83,
                    72,
                    85,
                    65,
                    0,
                    83,
                    72,
                    85,
                    65,
                    73,
                    0,
                    83,
                    72,
                    85,
                    65,
                    78,
                    0,
                    83,
                    72,
                    85,
                    65,
                    78,
                    71,
                    0,
                    83,
                    72,
                    85,
                    73,
                    0,
                    83,
                    72,
                    85,
                    78,
                    0,
                    83,
                    72,
                    85,
                    79,
                    0,
                    83,
                    73,
                    0,
                    83,
                    79,
                    78,
                    71,
                    0,
                    83,
                    79,
                    85,
                    0,
                    83,
                    85,
                    0,
                    83,
                    85,
                    65,
                    78,
                    0,
                    83,
                    85,
                    73,
                    0,
                    83,
                    85,
                    78,
                    0,
                    83,
                    85,
                    79,
                    0,
                    84,
                    65,
                    0,
                    84,
                    65,
                    73,
                    0,
                    84,
                    65,
                    78,
                    0,
                    84,
                    65,
                    78,
                    71,
                    0,
                    84,
                    65,
                    79,
                    0,
                    84,
                    69,
                    0,
                    84,
                    69,
                    73,
                    0,
                    84,
                    69,
                    78,
                    71,
                    0,
                    84,
                    73,
                    0,
                    84,
                    73,
                    65,
                    78,
                    0,
                    84,
                    73,
                    65,
                    79,
                    0,
                    84,
                    73,
                    69,
                    0,
                    84,
                    73,
                    78,
                    71,
                    0,
                    84,
                    79,
                    78,
                    71,
                    0,
                    84,
                    79,
                    85,
                    0,
                    84,
                    85,
                    0,
                    84,
                    85,
                    65,
                    78,
                    0,
                    84,
                    85,
                    73,
                    0,
                    84,
                    85,
                    78,
                    0,
                    84,
                    85,
                    79,
                    0,
                    87,
                    65,
                    0,
                    87,
                    65,
                    73,
                    0,
                    87,
                    65,
                    78,
                    0,
                    87,
                    65,
                    78,
                    71,
                    0,
                    87,
                    69,
                    73,
                    0,
                    87,
                    69,
                    78,
                    0,
                    87,
                    69,
                    78,
                    71,
                    0,
                    87,
                    79,
                    0,
                    87,
                    85,
                    0,
                    88,
                    73,
                    0,
                    88,
                    73,
                    65,
                    0,
                    88,
                    73,
                    65,
                    78,
                    0,
                    88,
                    73,
                    65,
                    78,
                    71,
                    0,
                    88,
                    73,
                    65,
                    79,
                    0,
                    88,
                    73,
                    69,
                    0,
                    88,
                    73,
                    78,
                    0,
                    88,
                    73,
                    78,
                    71,
                    0,
                    88,
                    73,
                    79,
                    78,
                    71,
                    0,
                    88,
                    73,
                    85,
                    0,
                    88,
                    85,
                    0,
                    88,
                    85,
                    65,
                    78,
                    0,
                    88,
                    85,
                    69,
                    0,
                    88,
                    85,
                    78,
                    0,
                    89,
                    65,
                    0,
                    89,
                    65,
                    78,
                    0,
                    89,
                    65,
                    78,
                    71,
                    0,
                    89,
                    65,
                    79,
                    0,
                    89,
                    69,
                    0,
                    89,
                    73,
                    0,
                    89,
                    73,
                    78,
                    0,
                    89,
                    73,
                    78,
                    71,
                    0,
                    89,
                    79,
                    0,
                    89,
                    79,
                    78,
                    71,
                    0,
                    89,
                    79,
                    85,
                    0,
                    89,
                    85,
                    0,
                    89,
                    85,
                    65,
                    78,
                    0,
                    89,
                    85,
                    69,
                    0,
                    89,
                    85,
                    78,
                    0,
                    90,
                    65,
                    0,
                    90,
                    65,
                    73,
                    0,
                    90,
                    65,
                    78,
                    0,
                    90,
                    65,
                    78,
                    71,
                    0,
                    90,
                    65,
                    79,
                    0,
                    90,
                    69,
                    0,
                    90,
                    69,
                    73,
                    0,
                    90,
                    69,
                    78,
                    0,
                    90,
                    69,
                    78,
                    71,
                    0,
                    90,
                    72,
                    65,
                    0,
                    90,
                    72,
                    65,
                    73,
                    0,
                    90,
                    72,
                    65,
                    78,
                    0,
                    90,
                    72,
                    65,
                    78,
                    71,
                    0,
                    90,
                    72,
                    65,
                    79,
                    0,
                    90,
                    72,
                    69,
                    0,
                    90,
                    72,
                    69,
                    73,
                    0,
                    90,
                    72,
                    69,
                    78,
                    0,
                    90,
                    72,
                    69,
                    78,
                    71,
                    0,
                    90,
                    72,
                    73,
                    0,
                    90,
                    72,
                    79,
                    78,
                    71,
                    0,
                    90,
                    72,
                    79,
                    85,
                    0,
                    90,
                    72,
                    85,
                    0,
                    90,
                    72,
                    85,
                    65,
                    0,
                    90,
                    72,
                    85,
                    65,
                    73,
                    0,
                    90,
                    72,
                    85,
                    65,
                    78,
                    0,
                    90,
                    72,
                    85,
                    65,
                    78,
                    71,
                    0,
                    90,
                    72,
                    85,
                    73,
                    0,
                    90,
                    72,
                    85,
                    78,
                    0,
                    90,
                    72,
                    85,
                    79,
                    0,
                    90,
                    73,
                    0,
                    90,
                    79,
                    78,
                    71,
                    0,
                    90,
                    79,
                    85,
                    0,
                    90,
                    85,
                    0,
                    90,
                    85,
                    65,
                    78,
                    0,
                    90,
                    85,
                    73,
                    0,
                    90,
                    85,
                    78,
                    0,
                    90,
                    85,
                    79,
                    0
                }, new char[422]
                {
                    '\u0001',
                    '\u0002',
                    '\u0003',
                    '\t',
                    '\u0004',
                    '\u0005',
                    '\u0006',
                    '\a',
                    '\b',
                    '\n',
                    '\v',
                    '\f',
                    '\r',
                    '\u000e',
                    '\u000f',
                    '\u0010',
                    '\u0011',
                    '\u0012',
                    '\u0013',
                    '\u0014',
                    '\u0015',
                    '\u0016',
                    '\u0017',
                    '\u0018',
                    '\u0019',
                    '\u001a',
                    '\u001b',
                    '\u001c',
                    '\u001d',
                    '\u001e',
                    '\u001f',
                    ' ',
                    '!',
                    '"',
                    '#',
                    '$',
                    '%',
                    '&',
                    '\'',
                    '(',
                    ')',
                    '*',
                    '+',
                    ',',
                    '-',
                    '.',
                    '/',
                    '0',
                    '1',
                    '2',
                    '3',
                    '4',
                    '5',
                    '6',
                    '7',
                    '8',
                    '9',
                    ':',
                    ';',
                    '<',
                    '=',
                    '>',
                    '?',
                    '@',
                    'A',
                    'B',
                    'C',
                    'D',
                    'E',
                    'F',
                    'G',
                    'H',
                    'I',
                    'J',
                    'K',
                    'L',
                    'M',
                    'N',
                    'O',
                    'P',
                    'Q',
                    'R',
                    'S',
                    'T',
                    'U',
                    'V',
                    'W',
                    'X',
                    'Y',
                    'Z',
                    '[',
                    '\\',
                    ']',
                    '^',
                    '_',
                    '`',
                    'a',
                    'b',
                    'c',
                    'd',
                    'e',
                    'f',
                    'g',
                    'h',
                    'i',
                    'j',
                    'k',
                    'l',
                    'm',
                    'n',
                    'o',
                    'p',
                    'q',
                    'r',
                    's',
                    't',
                    'u',
                    'v',
                    'w',
                    'x',
                    'y',
                    'z',
                    '{',
                    '|',
                    '}',
                    '~',
                    '\u007f',
                    '\u0080',
                    '\u0081',
                    '\u0082',
                    '\u0083',
                    '\u0084',
                    '\u0085',
                    '\u0086',
                    '\u0087',
                    '\u0088',
                    '\u0089',
                    '\u008a',
                    '\u008b',
                    '\u008c',
                    '\u008d',
                    '\u008e',
                    '\u008f',
                    '\u0090',
                    '\u0091',
                    '\u0092',
                    '\u0093',
                    '\u0094',
                    '\u0095',
                    '\u0096',
                    '\u0097',
                    '\u0098',
                    '\u0099',
                    '\u009a',
                    '\u009b',
                    '\u009c',
                    '\u009d',
                    '\u009e',
                    '\u009f',
                    '\u00a0',
                    '¡',
                    '¢',
                    '£',
                    '¤',
                    '¥',
                    '¦',
                    '§',
                    '\u00a8',
                    '©',
                    'ª',
                    '«',
                    '¬',
                    '­',
                    '®',
                    '\u00af',
                    '°',
                    '±',
                    '²',
                    '³',
                    '\u00b4',
                    'µ',
                    '¶',
                    '·',
                    '\u00b8',
                    '¹',
                    'º',
                    '»',
                    '¼',
                    '½',
                    '¾',
                    '¿',
                    'À',
                    'Á',
                    'Â',
                    'Ã',
                    'Ä',
                    'Å',
                    'Æ',
                    'Ç',
                    'È',
                    'É',
                    'Ê',
                    'Ë',
                    'Ì',
                    'Í',
                    'Î',
                    'Ï',
                    'Ð',
                    'Ñ',
                    'Ò',
                    'Ó',
                    'Ô',
                    'Õ',
                    'Ö',
                    '×',
                    'Ø',
                    'Ù',
                    'Ú',
                    'Û',
                    'Ü',
                    'Ý',
                    'Þ',
                    'ß',
                    'à',
                    'á',
                    'â',
                    'ã',
                    'ä',
                    'å',
                    'æ',
                    'ç',
                    'è',
                    'é',
                    'ê',
                    'ë',
                    'ì',
                    'í',
                    'î',
                    'ï',
                    'ð',
                    'ñ',
                    'ò',
                    'ó',
                    'ô',
                    'õ',
                    'ö',
                    '÷',
                    'ø',
                    'ù',
                    'ú',
                    'û',
                    'ü',
                    'ý',
                    'þ',
                    'ÿ',
                    'Ā',
                    'ā',
                    'Ă',
                    'ă',
                    'Ą',
                    'ą',
                    'Ć',
                    'ć',
                    'Ĉ',
                    'ĉ',
                    'Ċ',
                    'ċ',
                    'Č',
                    'č',
                    'Ď',
                    'ď',
                    'Đ',
                    'đ',
                    'Ē',
                    'ē',
                    'Ĕ',
                    'ĕ',
                    'Ė',
                    'ė',
                    'Ę',
                    'ę',
                    'Ě',
                    'ě',
                    'Ĝ',
                    'ĝ',
                    'Ğ',
                    'ğ',
                    'Ġ',
                    'ġ',
                    'Ģ',
                    'ģ',
                    'Ĥ',
                    'ĥ',
                    'Ħ',
                    'ħ',
                    'Ĩ',
                    'ĩ',
                    'Ī',
                    'ī',
                    'Ĭ',
                    'ĭ',
                    'Į',
                    'į',
                    'İ',
                    'ı',
                    'Ĳ',
                    'ĳ',
                    'Ĵ',
                    'ĵ',
                    'Ķ',
                    'ķ',
                    'ĸ',
                    'Ĺ',
                    'ĺ',
                    'Ļ',
                    'ļ',
                    'Ľ',
                    'ľ',
                    'Ŀ',
                    'ŀ',
                    'Ł',
                    'ł',
                    'Ń',
                    'ń',
                    'Ņ',
                    'ņ',
                    'Ň',
                    'ň',
                    'ŉ',
                    'Ŋ',
                    'ŋ',
                    'Ō',
                    'ō',
                    'Ŏ',
                    'ŏ',
                    'Ő',
                    'ő',
                    'Œ',
                    'œ',
                    'Ŕ',
                    'ŕ',
                    'Ŗ',
                    'ŗ',
                    'Ř',
                    'ř',
                    'Ś',
                    'ś',
                    'Ŝ',
                    'ŝ',
                    'Ş',
                    'ş',
                    'Š',
                    'š',
                    'Ţ',
                    'ţ',
                    'Ť',
                    'ť',
                    'Ŧ',
                    'ŧ',
                    'Ũ',
                    'ũ',
                    'Ū',
                    'ū',
                    'Ŭ',
                    'ŭ',
                    'Ů',
                    'ů',
                    'Ű',
                    'ű',
                    'Ų',
                    'ų',
                    'Ŵ',
                    'ŵ',
                    'Ŷ',
                    'ŷ',
                    'Ÿ',
                    'Ź',
                    'ź',
                    'Ż',
                    'ż',
                    'Ž',
                    'ž',
                    'ſ',
                    'ƀ',
                    'Ɓ',
                    'Ƃ',
                    'ƃ',
                    'Ƅ',
                    'ƅ',
                    'Ɔ',
                    'Ƈ',
                    'ƈ',
                    'Ɖ',
                    'Ɗ',
                    'Ƌ',
                    'ƌ',
                    'ƍ',
                    'Ǝ',
                    'Ə',
                    'Ɛ',
                    'Ƒ',
                    'ƒ',
                    'Ɠ',
                    'Ɣ',
                    'ƕ',
                    'Ɩ',
                    'Ɨ',
                    'Ƙ',
                    'ƙ',
                    'ƚ',
                    'ƛ',
                    'Ɯ',
                    'Ɲ',
                    'ƞ',
                    'Ɵ',
                    'Ơ',
                    'ơ',
                    'Ƣ',
                    'ƣ',
                    'Ƥ',
                    'ƥ',
                    'Ʀ'
                })
            };
            _updIds = new char[185]
            {
                '\u0001',
                '\u0002',
                '\u0003',
                '\u0004',
                '!',
                '.',
                'a',
                'b',
                'c',
                'd',
                'e',
                'f',
                'g',
                'h',
                'i',
                'j',
                'k',
                'l',
                'm',
                'n',
                'o',
                'p',
                'q',
                'r',
                's',
                't',
                'u',
                'v',
                'w',
                'x',
                'y',
                'z',
                '|',
                'æ',
                'ç',
                'ð',
                'ø',
                'ħ',
                'ŋ',
                'œ',
                'ǀ',
                'ǁ',
                'ǂ',
                'ǃ',
                'ɐ',
                'ɑ',
                'ɒ',
                'ɓ',
                'ɔ',
                'ɕ',
                'ɖ',
                'ɗ',
                'ɘ',
                'ə',
                'ɚ',
                'ɛ',
                'ɜ',
                'ɝ',
                'ɞ',
                'ɟ',
                'ɠ',
                'ɡ',
                'ɢ',
                'ɣ',
                'ɤ',
                'ɥ',
                'ɦ',
                'ɧ',
                'ɨ',
                'ɪ',
                'ɫ',
                'ɬ',
                'ɭ',
                'ɮ',
                'ɯ',
                'ɰ',
                'ɱ',
                'ɲ',
                'ɳ',
                'ɴ',
                'ɵ',
                'ɶ',
                'ɸ',
                'ɹ',
                'ɺ',
                'ɻ',
                'ɽ',
                'ɾ',
                'ʀ',
                'ʁ',
                'ʂ',
                'ʃ',
                'ʄ',
                'ʆ',
                'ʇ',
                'ʈ',
                'ʉ',
                'ʊ',
                'ʋ',
                'ʌ',
                'ʍ',
                'ʎ',
                'ʏ',
                'ʐ',
                'ʑ',
                'ʒ',
                'ʓ',
                'ʔ',
                'ʕ',
                'ʖ',
                'ʗ',
                'ʘ',
                'ʙ',
                'ʛ',
                'ʜ',
                'ʝ',
                'ʟ',
                'ʠ',
                'ʡ',
                'ʢ',
                'ʣ',
                'ʤ',
                'ʥ',
                'ʦ',
                'ʧ',
                'ʨ',
                '\u02b0',
                '\u02b1',
                '\u02b2',
                '\u02b4',
                '\u02b7',
                '\u02bc',
                '\u02c8',
                '\u02cc',
                '\u02d0',
                '\u02d1',
                '\u02d8',
                '\u02de',
                '\u02e0',
                '\u02e1',
                '\u02e4',
                '\u0300',
                '\u0301',
                '\u0303',
                '\u0304',
                '\u0306',
                '\u0308',
                '\u030a',
                '\u030b',
                '\u030f',
                '\u0318',
                '\u0319',
                '\u031a',
                '\u031c',
                '\u031d',
                '\u031e',
                '\u031f',
                '\u0320',
                '\u0324',
                '\u0325',
                '\u0329',
                '\u032a',
                '\u032c',
                '\u032f',
                '\u0330',
                '\u0331',
                '\u0334',
                '\u0339',
                '\u033a',
                '\u033b',
                '\u033c',
                '\u033d',
                '\u0361',
                'β',
                'θ',
                'χ',
                '\u0740',
                '‖',
                '\u203f',
                '\u207f',
                '↑',
                '→',
                '↓',
                '↗',
                '↘'
            };
            _phoneMaps = DecompressPhoneMaps(_phoneMapsCompressed);
            _upsConverter = new PhonemeConverter(_phoneMaps[0]);
        }

        private PhonemeConverter(PhoneMap phoneMap)
        {
            _phoneMap = phoneMap;
        }

        internal static string ConvertPronToId(string pronunciation, int lcid)
        {
            PhonemeConverter phonemeConverter = UpsConverter;
            PhoneMap[] phoneMaps = _phoneMaps;
            foreach (PhoneMap phoneMap in phoneMaps)
            {
                if (phoneMap._lcid == lcid)
                {
                    phonemeConverter = new PhonemeConverter(phoneMap);
                }
            }
            string text = phonemeConverter.ConvertPronToId(pronunciation);
            if (string.IsNullOrEmpty(text))
            {
                throw new FormatException(SR.Get(SRID.EmptyPronunciationString));
            }
            return text;
        }

        internal string ConvertPronToId(string sPhone)
        {
            sPhone = sPhone.Trim(Helpers._achTrimChars);
            if (string.IsNullOrEmpty(sPhone))
            {
                return string.Empty;
            }
            int i = 0;
            int length = sPhone.Length;
            StringBuilder stringBuilder = new StringBuilder(length);
            PhoneId phoneId = new PhoneId();
            while (i < length)
            {
                int num = sPhone.IndexOf(' ', i + 1);
                if (num < 0)
                {
                    num = length;
                }
                string text = sPhone.Substring(i, num - i);
                string text2 = phoneId._phone = text.ToUpperInvariant();
                int num2 = Array.BinarySearch(_phoneMap._phoneIds, phoneId, phoneId);
                if (num2 >= 0)
                {
                    char[] cp = _phoneMap._phoneIds[num2]._cp;
                    foreach (char value in cp)
                    {
                        stringBuilder.Append(value);
                    }
                    for (i = num; i < length && sPhone[i] == ' '; i++)
                    {
                    }
                    continue;
                }
                throw new FormatException(SR.Get(SRID.InvalidPhoneme, text));
            }
            return stringBuilder.ToString();
        }

        internal static void ValidateUpsIds(string ids)
        {
            ValidateUpsIds(ids.ToCharArray());
        }

        internal static void ValidateUpsIds(char[] ids)
        {
            int num = 0;
            char c;
            while (true)
            {
                if (num < ids.Length)
                {
                    c = ids[num];
                    if (Array.BinarySearch(_updIds, c) < 0)
                    {
                        break;
                    }
                    num++;
                    continue;
                }
                return;
            }
            throw new FormatException(SR.Get(SRID.InvalidPhoneme, c));
        }

        private static PhoneMap[] DecompressPhoneMaps(PhoneMapCompressed[] pmComps)
        {
            PhoneMap[] array = new PhoneMap[pmComps.Length];
            for (int i = 0; i < pmComps.Length; i++)
            {
                PhoneMapCompressed phoneMapCompressed = pmComps[i];
                PhoneMap phoneMap = array[i] = new PhoneMap();
                phoneMap._lcid = phoneMapCompressed._lcid;
                phoneMap._phoneIds = new PhoneId[phoneMapCompressed._count];
                int num = 0;
                int num2 = 0;
                for (int j = 0; j < phoneMap._phoneIds.Length; j++)
                {
                    phoneMap._phoneIds[j] = new PhoneId();
                    int num3 = 0;
                    int k;
                    for (k = num; phoneMapCompressed._phones[k] != 0; k++)
                    {
                        if (phoneMapCompressed._phones[k] == byte.MaxValue)
                        {
                            num3++;
                        }
                    }
                    int num4 = k - num - num3;
                    char[] array2 = new char[num4];
                    for (int l = 0; l < num4; l++)
                    {
                        array2[l] = (char)phoneMapCompressed._phones[num++];
                    }
                    num += num3 + 1;
                    phoneMap._phoneIds[j]._phone = new string(array2);
                    phoneMap._phoneIds[j]._cp = new char[num3 + 1];
                    for (int m = 0; m < phoneMap._phoneIds[j]._cp.Length; m++)
                    {
                        phoneMap._phoneIds[j]._cp[m] = phoneMapCompressed._cps[num2++];
                    }
                }
            }
            return array;
        }
    }
}